package com.cskaoyan.javase.oop1._12block._2building;

/**
 * 构造代码块的实践用途
 * 构造代码块最大的特点就是其中的代码会最终加入构造，所以依据这一点：
 *
 * 1. 我们可以“提取公因式”一样的，把所有构造器都需要执行的代码，放入构造代码块中
 * 2. 其次，构造代码块毕竟是给成员变量赋值用的，所以：
 *    - 如果需要很复杂的代码完成成员变量的赋值（如果只是给一个值，用显式赋值和构造器足矣）
 *      - 比如需要一个算法，需要一定计算等等。在这些场景下，使用构造代码块是一个不错的选择
 * @since 10:18
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo3 {
    public static void main(String[] args) {

    }
}

class A {
    int a;
    static int count = 0;

    {
        A.count++;
    }

    public A() {
        // A.count++;
    }

    public A(int a) {
        this.a = a;
        // A.count++;
    }
}
